



#
#日志导出当日，tar备份！

echo -e "\e[32m ##################################### 实现功能 #####################################\e[0m"
echo -e 
echo -e "\e[32m 1.对昨天日志导出，并做tar备份！ \e[0m"
echo -e "\e[32m 2.支持日志路径记忆 \e[0m"
echo -e "\e[32m 2.支持输出路径记忆 \e[0m"
echo -e "\e[32m 3.脚本复用！（可复制多个脚本可对应多个日志进行日常导出备份） \e[0m"
echo "------------------------------------------------------------------------------------"
echo -e "\e[32m 支持的期类型：2022-01-01 、 01/Jan/2022 、 Jan 01, 2022 (如有其它日期类型请告知)\e[0m"
echo -e "\e[32m 日志输出路径格式：输出目录/日志日期/本机IP.log \e[0m"
echo "------------------------------------------------------------------------------------"
echo
echo "本地当前语言环境：$LANG"
echo -e "\e[31m !!! 请确认日志的月份：如果是英文月份，需临时更改本地语言：LANG=en_US.UTF8 !!!\e[0m"
echo -e "\e[31m !!! 请确认日志的月份：如果是中文月份，需临时更改本地语言：LANG=zh_CN.UTF8 !!!\e[0m"
echo


#创建LOGPATHFILE文件，保存日志路径
LOGPATHFILE=~/.LOGPATHNAME
if [ ! -e "~./LOGPATHNAME" ];then
 touch $LOGPATHFILE
fi


#当前脚本路径
SHDIR=`echo $PWD`
SHNAME=`echo $0`
SHPATH=$SHDIR/$SHNAME
#判断SRCLOGPATH是否存在

SRCLOGPATH=`cat $LOGPATHFILE |grep -E "^$SHPATH="|awk -F "=" '{print $2}'`



if [  -z "$SRCLOGPATH"   ] ;then
	while true
	do
	#SRCLOGPATH路径
	read -p "输入log日志路径：" SRCLOGPATH
	#判断是否绝对路径
	TEST=`echo $SRCLOGPATH |grep "^/"`
	if [  -z $TEST ];then
		echo -e "\e[31m 输入错误，请输入日志绝对路径! \e[0m"
	else
	
		#判断文件是否存在
		if [ ! -e "$SRCLOGPATH" ] ;then
			echo -e "\e[31m 日志文件不存在，请重新输入！\e[0m"
			echo			
		else			
			echo "$SHPATH=$SRCLOGPATH" >> $LOGPATHFILE
			echo "当前日志路径：$SRCLOGPATH"
			break
		fi	

	fi 
	done

		
else
	while true
	do
	echo "当前日志路径：$SRCLOGPATH"
	echo "1.使用当前日志路径"
	echo "2.修改当前日志路径"
	read -t 20 -p "请 20 秒内选择输入（默认1）：" NUM
		if [  -z "$NUM" ] ;then
			break
		else
			case $NUM in
				1)
				break

				;;

				2)
			
					while true
					do
					#SRCLOGPATH路径
					read -p "输入log日志路径（绝对路径）：" SRCLOGPATH
					#判断是否绝对路径
					TEST=`echo $SRCLOGPATH |grep "^/"`
					if [  -z $TEST ];then
					echo -e "\e[31m 输入错误，请输入日志绝对路径! \e[0m"
					else
	
					#判断文件是否存在
						if [ ! -e "$SRCLOGPATH" ] ;then
						echo -e "\e[31m 日志文件不存在，请重新输入！\e[0m"
						echo			
						else
						#转义
						echo $SHPATH|sed 's#/#\\/#g' > /tmp/name
						ZHSHPATH=`cat /tmp/name`
						sed -i "/$ZHSHPATH/d"	$LOGPATHFILE	
						echo "$SHPATH=$SRCLOGPATH" >> $LOGPATHFILE
						echo "当前日志路径：$SRCLOGPATH"
						break 2
						fi	

					fi 
					done
				;;

				*)
				echo
				echo -e "\e[31m !!! 输入错误，请输入1或者2 !!! \e[0m"
				echo 
				;;
			esac
		fi


	done
fi

echo





#获取日志目录
SRCLOGDIR=`echo ${SRCLOGPATH%/*}`
#获取日志名称
SRCLOGNAME=`echo ${SRCLOGPATH##*/}`







#输出目录
OUTEX=OUT

OUTLOGDIR=`cat $LOGPATHFILE |grep -E "^$SHPATH$OUTEX=" |awk -F "="  '{print $2}'`
if [  -z "$OUTLOGDIR" ];then
			while true
			do
			read -p "请输入输出基目录：" OUTLOGDIR
			TEST=`echo $OUTLOGDIR |grep -E "^/" `
			if [   -z "$TEST" ];then
			echo "！！！  路径错误，请输入全路径！ ！！！"
			else
			echo "$SHPATH$OUTEX=$OUTLOGDIR" >> $LOGPATHFILE

			mkdir -p $OUTLOGDIR
			break
			fi
			done
else

			while true
			do
			echo "默认输出基目录:$OUTLOGDIR"
			echo "1.使用默认输基出目录"
			echo "2.修改输出基目录"
			read -t 20 -p "请 20 秒内选择输入（默认1）：" NUM
			if [  -z "$NUM" ] ;then
			break
			else
				case $NUM in
				1)
				break 
				;;
				2)
				while true
				do
					read -p "请输入新的输出基目录："  OUTLOGDIR	
					#判断路径是否绝对路径		
					TEST=`echo $OUTLOGDIR |grep -E "^/" `
					if [   -z "$TEST" ];then
					echo  -e "\e[31m ！！！  路径错误，请输入全路径！ ！！！ \e[0m"
					else
					#转义
					echo $SHPATH$OUTEX|sed 's#/#\\/#g' > /tmp/name
					OUTSHPATH=`cat /tmp/name`
					sed -i "/$SHPATH$OUTEX/d" $LOGPATHFILE
					echo "$SHPATH$OUTEX=$OUTLOGDIR" >> $LOGPATHFILE
					mkdir -p $OUTLOGDIR
					break 2
					fi
				done
				;;
				*)
				echo "！！！ 输入错误，请输入1或者2 ！！！"
				esac
			fi
			done
fi

#判断目录是否创建成功
if [  ! -d  "$OUTLOGDIR" ];then
	echo -e "\e[31m 输出目录创建失败，请确认是否具有目录权限！[0m"
	exit
fi




#输出日期
OUTDATE=`date -d "-1 day" +%F`
#目录
LOGTARDIR=$OUTLOGDIR/$OUTDATE/TAR
LOGFILEDIR=$OUTLOGDIR/$OUTDATE/FILE
mkdir -p $OUTLOGDIR
mkdir -p $LOGTARDIR
mkdir -p $LOGFILEDIR


###FILE
#当天格式
#第一种日期格式（年-月-日）：2022-01-01
DATEformat1=`date -d "-1 day" +%F`
#第二种日期格式（日/月/年）：01/Jan/2022
DATEformat2=`date -d "-1 day" +%d/%b/%Y`
#第三种日期格式（月 日, 年）：Jan 01, 2022
DATEformat3=`date -d "-1 day" '+%b %d, %Y'`
#当前IP
IPLAN=`hostname -I |awk '{print $1}'`
#文件扩展名
EX=.log
EX1=.tar.gz
#文件名
LOGNAME=$IPLAN$EX
TARNAME=$IPLAN$EX1
#LOG文件路径
FILELOGPATH=$LOGFILEDIR/$LOGNAME
#TAR文件路径
TARLOGPATH=$LOGTARDIR/$TARNAME
###自动导出当日日志###



#过滤当天日志并导出
cat $SRCLOGPATH | grep -E "$DATEformat1|$DATEformat2|$DATEformat3"   >  $FILELOGPATH

#对当天日志tar
tar -zcf $TARLOGPATH -C  $LOGFILEDIR $LOGNAME


#日志输出
echo
echo -e "\e[33m 日志输出路径：$FILELOGPATH  \e[0m"
echo -e "\e[33m TAR包输出路径：$TARLOGPATH \e[0m"
echo
echo "#####################################################################################################################"



